# locust777

//-----------------------------------------------------------------------------------------------------------------------

//写一个函数打印arr数组的内容，不适用数组下标，使用指针


//#include<stdio.h>
//#include<windows.h>
//
//void print(int* p,int sz)
//{
//	int i = 0;
//	for(i = 0;i < sz;i++)
//	{
//		printf("%d ",*(p + i));
//	}
//	printf("\n");
//}
//
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr)/sizeof(arr[0]);
//	print(arr,sz);
//
//
//system("pasue");
//return 0;
//}


//将一个字符串str的内容颠倒过来，并输出

//
//#include<stdio.h>
//#include<windows.h>
//
//
//int main()
//{
//	char arr[10] = {0};
//
//	scanf("%s",arr);    //abc def
//	printf("%s\n",arr); //abc
//
//	gets(arr);         //abc def
//	printf("%s\n",arr);//abc def
//
//
//system("pasue");
//return 0;
//}
//


//
//#include<stdio.h>
//#include<windows.h>
//#include<string.h>
//
//int main()
//{
//	char arr[10001] = {0};
//	gets(arr);                       ////报错，无法输出
//
//	//逆序
//	int left = 0;
//	int right = strlen(arr)-1; //长度-1，坐标
//
//	while(left<right)
//	{
//		char tmp = arr[left];
//		arr[left] = arr[right];
//		arr[right] = tmp;   //左右交换
//	
//		left++;
//		right--; //慢慢渐近
//	}
//
//	printf("%s\n",arr);
//
//
//system("pause");
//return 0;
//}




//
//#include<stdio.h>
//#include<windows.h>
//
//int main()
//{
//	//int a = 0;
//	//int n = 0;
//	//scanf("%d %d",&a,&n); //2 5  //bug式scanf语句
//
//	int a = 2;
//	int n = 5;
//	//scanf("%d%d",&a,&b);
//
//	int i =0;
//	int sum =  0;
//	int k = 0;
//	for(i = 0;i < n;i++)  //n = 5
//	{
//		k = k * 10 + a; //2 2*10+2
//		sum += k; //2
//	
//	}
//	printf("%d\n",sum);
//
//system("pause");
//return 0;
//}
//


//求出0-10000之间的所有"水仙花数"并输出
//"水仙花数"是指一个n位数，其各位数字的n次方之和确好等于改数本身，如：153=1^3 + 5^3 + 3^3,则153是一个"水仙花数"。

#include<stdio.h>
#include<windows.h>
#include<math.h>

int main()
{
	int i = 0;
	for(i = 0;i <= 100000;i++)
	{
		//判断i是否为"水仙花数"
		//1234
		//1. 计算i是几位数 -> n
		//

		int n = 1; //任何一个数至少是一位数
		int tmp = i;
		int sum = 0;
		while(tmp / 10)
		{
			n++;
			tmp /= 10;
		}
		//2.得到i每一位，计算其他的n次方之和
		tmp = i;
		while(tmp)
		{
			sum += pow(tmp % 10,n);
			tmp /= 10;
		}

		if(sum == i)
		{
			printf("%d ",i);
		}

	}

system("pause");
return 0;
}




#include<stdio.h>
#include<windows.h>
#include<math.h>


int is_narcissistic_number(int i)
{
		//判断i是否为"水仙花数"
		//1234
		//1. 计算i是几位数 -> n
		//

		int n = 1; //任何一个数至少是一位数
		int tmp = i;
		int sum = 0;
		while(tmp / 10)
		{
			n++;
			tmp /= 10;
		}
		//2.得到i每一位，计算其他的n次方之和
		tmp = i;
		while(tmp)
		{
			sum += pow(tmp % 10,n);
			tmp /= 10;
		}

		if(sum == i)
		{
			return 1;
		}
		else
		{
			return 0;
		}

}

int main()
{
		int i = 0;
		for(i = 0;i <= 100000;i++)
		{
			if(is_narcissistic_number(i))
			{
				printf("%d ",i);
			}
		
		}

system("pause");
return 0;
}